// config是Vue配置对象
// function Vue(config={}){
//     const {data={},methods={}} = config;
//     this.$data = data;
//     for(let key in data){
//         Object.defineProperty(this,key,{
//             get(){
//                 return this.$data[key];
//             },
//             set(v){
//                 this.$data[key] = v;
//             }
//         })
//     }
//
//     for(let key in methods){
//         Object.defineProperty(this,key,{
//             get(){
//                 return methods[key];
//             },
//             set(v){
//                 methods[key] = v;
//             }
//         })
//     }
// }

//优化
function Vue(config={}){
    const {data={},methods={}}=config;
    this.$data=data;
    this.proxy(this.$data);
    this.proxy(methods);
}
Object.assign(Vue.prototype, {
    proxy(obj){
        for(let key in obj){
            Object.defineProperty(this,key,{
                get(){
                    return obj[key];
                },
                set(v){
                    obj[key]=v;
                }
            })
        }
    }
});






export default Vue;